'''
任何实现了__enter()和__exit__方法的对象都可称为上下文管理器，上下文管理器对象可以使用with关键字.
显然，文件(file)对象也实现了上下文管理器
'''
class File():
    def __init__(self,filename,mode,encoding='gbk'):
        self.filename=filename
        self.mode=mode
        return
    def __enter__(self):
        print('entering')
        self.f=open(self.filename,self.mode)
        return self.f

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('will exit')
        self.f.close()

with File('上下文管理器.txt','w') as f:
    print('writing',f)
    f.write('上下文管理器')
